/**

 * 版权所有(C)，上海勾芒信息科技，2017，所有权利保留。
 *
 * 项目名：cards-web 
 * 文件名：:ResponseFilter.java
 * 模块说明：	
 * 修改历史：
 * 2017年10月13日 - liyang - 创建。
 *
 */
package common;

import java.io.File;
import java.io.IOException;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerResponseContext;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.thor.commons.rs.cxf.ResponsePackage;
import com.thor.commons.rs.cxf.ThorResponseFilter;

/**
 * @author:liyang
 * @time:2017年10月13日 上午11:58:06
 * @since:1.0
 */
public class ResponseFilter extends ThorResponseFilter {

  
  private final static Logger logger = LoggerFactory.getLogger(ResponseFilter.class);
  
  
  @Override
  public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) throws IOException {
      Object obj = responseContext.getEntity();
      if (obj instanceof File) {
          responseContext.getHeaders().add("content-disposition", "attachment; filename=" + ((File) obj).getName());
          return;
      }
      if (Status.Family.CLIENT_ERROR.equals(responseContext.getStatusInfo().getFamily())
              || Status.Family.SERVER_ERROR.equals(responseContext.getStatusInfo().getFamily()))
          return;
      if (!responseContext.getHeaders().containsKey(HttpHeaders.CONTENT_TYPE)) {
          responseContext.getHeaders().add(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON + ";charset=utf-8");
          responseContext.setStatusInfo(Response.Status.OK);
      }
      responseContext.setEntity(ResponsePackage.buildSuccess(obj));
      logger.info("----------------这是一个悲伤的故事---------------------");
  }
}
